IconMosaic is a BackSpace module that searches application directories, and application binaries, for icons to display randomly on the screen.  It loads *.tiff and *.eps files from the NeXT's file system and from segments in Mach binaries.  IconMosaic provides a slider on the BackSpace Settings panel to control the density of the images.  (There are other defaults you can adjust listed below.)    Since what's displayed can be tuned to what's installed on the machine, the display can differ on each NeXT.

IconMosaic spawns a separate thread to search for images so that it can function immediately as a screen saver using whatever images it has found.  (You'll notice a lot of repetition as it starts up.)  It won't start looking for images until asked to display itself and will suspend the search using a condition and mutex whenever it is no longer actively displaying, resuming the search when called on.  When IconMosaic starts displaying, you'll hear disk activity as it seeks out images but eventually it will quiet down as the image search ends and it just reuses what has been found.  (IconMosaic loads the images into memory so that it doesn't constantly exercise the disk when acting as a screen saver.)

IconMosaic was built and tested with the NeXTSTEP 3.0 version of BackSpace and may be incompatible with earlier versions.

Installation

To install IconMosaic, copy the IconMosaicView.BackModule bundle (directory) into the ~/Library/BackSpaceViews or /LocalLibrary/BackSpaceViews directory.  The following will install IconMosaic in your ~/Library/BackSpaceViews directory:

make install

Or you can specify the installation directory:

make install INSTALLDIR=/LocalLibrary/BackSpaceViews

Or use 'cp -r' or tar to move the file to the desired location.

Defaults

IconMosaic has several defaults that you can set either by doing a dwrite (under the owner BackSpace) or, by editing the Defaults.strings file in the IconMosaicView.BackModule bundle (at any time) or in the source directory before (re)installing :

	IconMosaicImagePaths ( = "/NextApps:/usr/lib/NextStep" )

This default is a list of directories where IconMosaic should look for images.  For a larger, more individual selection of images, try:

	"/NextApps:/LocalApps:/usr/lib/NextStep"

For a really huge selection of images, which of course will use even more memory (but hey, your machine's idle anyway), try:

	"/NextApps:/LocalApps:/NextAdmin:/LocalAdmin:/NextDeveloper/Apps:
	/LocalDeveloper/Apps:/NextDeveloper/Demos:/LocalDeveloper/Demos:
	/NextDeveloper/Games:/LocalDeveloper/Games:/usr/filesystems:
	/NextLibrary/References/OxfordQuotations/tiff:/usr/lib/NextStep"

Or maybe some subset of those!  For a slightly different visual effect you might try:

	dwrite BackSpace IconMosaicImagePaths "/LocalLibrary/NewsGrazer/People"
	
if you have a NewsGrazer (or Mail) images directory.  Although the Webster-Dictionary/pictures directory has images, it won't work very well with IconMosaic as the *.tiff files are incompatible.

	IconMosaicDensity ( = "0.10" )

This controls the number of images on the screen and should be a value between 0 and 1.  It is simplest to set this default using the slider in the inspector inside BackSpace.

	IconMosaicMaximumBytes ( = "8192" )
	IconMosaicMaximumSize ( = "w:72 h:72" )

These defaults control how large an image IconMosaic will use.  The first default is a rough setting to limit how large a file (or segment) IconMosaic will even open and the second default is the size below which it will actually keep images that it's found.  Since some images contain both color and monochrome versions, the first default should be slightly lax compared to the second.

	IconMosaicImageSuffixList ( = ".tiff:.eps" )

These are the types of files that IconMosaic will look for in the IconMosaicImagePaths directories.

	IconMosaicSegmentList ( = "__ICON:__TIFF:__EPS" )
	IconMosaicIgnoreSectionList ( = "__header:__request:__services" )

These defaults control which Mach segments IconMosaic will search, and having found such a segment, which sections it will ignore in the process of loading images. 

Christopher_Lane@Med.Stanford.EDU